Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / backend / test_appcontainer_sandbox.py

Displaying Raw • Download


tests/backend/test_appcontainer_sandbox.py 4bd787ccd70a459a02eececca3f942f0e64ec4ce (4bd787cc) Text, 11.05 KB

T8b949e# SPDX-License-Identifier: 0BSD

T8b949e"""Unit tests for Windows AppContainer sandbox helpers."""

Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations

Tff7b72from T7ee787unittestT7ee787.T7ee787mock Tff7b72import Te6edf3MagicMockTb4b4b4, Te6edf3patch

Tff7b72import T7ee787pytest

Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backend Tff7b72import Te6edf3appcontainer_sandbox Tff7b72as Te6edf3ac
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backend Tff7b72import Te6edf3appcontainer_launcher Tff7b72as Te6edf3launcher


Tf0883e@pytestTff7b72.Td2a8fffixtureTb4b4b4(Te6edf3autouseTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72def Td2a8ff_reset_support_cacheTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3acTff7b72.Td2a8ff_appcontainer_support_cached Tff7b72= Tff7b72None
Tff7b72yield
Te6edf3acTff7b72.Td2a8ff_appcontainer_support_cached Tff7b72= Tff7b72None


Tff7b72def Td2a8fftest_appcontainer_supported_false_on_non_windowsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72with Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffsysTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_sysTb4b4b4:
Te6edf3mock_sysTff7b72.Td2a8ffplatform Tff7b72= Ta5d6ff"Ta5d6fflinuxTa5d6ff"
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_supportedTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_requestedTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False


Tff7b72def Td2a8fftest_appcontainer_disabled_by_envTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetenvTb4b4b4(Ta5d6ff"Ta5d6ffMESHCHAT_APPCONTAINERTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4)
Tff7b72with Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffsysTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_sysTb4b4b4:
Te6edf3mock_sysTff7b72.Td2a8ffplatform Tff7b72= Ta5d6ff"Ta5d6ffwin32Ta5d6ff"
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_requestedTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_disabled_by_envTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72True
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_forcedTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False


Tff7b72def Td2a8fftest_appcontainer_forced_envTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetenvTb4b4b4(Ta5d6ff"Ta5d6ffMESHCHAT_APPCONTAINERTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4)
Tff7b72with Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffsysTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_sysTb4b4b4:
Te6edf3mock_sysTff7b72.Td2a8ffplatform Tff7b72= Ta5d6ff"Ta5d6ffwin32Ta5d6ff"
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_requestedTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72True
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_auto_enabledTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_forcedTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72True


Tff7b72def Td2a8fftest_appcontainer_off_by_default_when_env_unsetTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffdelenvTb4b4b4(Ta5d6ff"Ta5d6ffMESHCHAT_APPCONTAINERTa5d6ff"Tb4b4b4, Te6edf3raisingTff7b72=Tff7b72FalseTb4b4b4)
Tff7b72with Tb4b4b4(
Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffsysTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_sysTb4b4b4,
Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffappcontainer_supportedTa5d6ff"Tb4b4b4, Te6edf3return_valueTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3mock_sysTff7b72.Td2a8ffplatform Tff7b72= Ta5d6ff"Ta5d6ffwin32Ta5d6ff"
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_requestedTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False
Tff7b72assert Te6edf3acTff7b72.Td2a8ffappcontainer_auto_enabledTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False


Tff7b72def Td2a8fftest_is_appcontainer_childTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffdelenvTb4b4b4(Te6edf3acTff7b72.Td2a8ffCHILD_ENV_FLAGTb4b4b4, Te6edf3raisingTff7b72=Tff7b72FalseTb4b4b4)
Tff7b72assert Te6edf3acTff7b72.Td2a8ffis_appcontainer_childTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False
Te6edf3monkeypatchTff7b72.Td2a8ffsetenvTb4b4b4(Te6edf3acTff7b72.Td2a8ffCHILD_ENV_FLAGTb4b4b4, Ta5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3acTff7b72.Td2a8ffis_appcontainer_childTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72True


Tff7b72def Td2a8fftest_collect_rw_roots_includes_storage_and_tempTb4b4b4(Te6edf3tmp_pathTb4b4b4, Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3storage Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffstorageTa5d6ff"
Te6edf3reticulum Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffreticulumTa5d6ff"
Te6edf3logs Tff7b72= Te6edf3storage Tff7b72/ Ta5d6ff"Ta5d6fflogsTa5d6ff"
Te6edf3storageTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3reticulumTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3logsTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3fake_temp Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6fftmpTa5d6ff"
Te6edf3fake_tempTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTff7b72.Td2a8fftempfileTb4b4b4, Ta5d6ff"Ta5d6ffgettempdirTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tffa657strTb4b4b4(Te6edf3fake_tempTb4b4b4)Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffcollect_user_exchange_rootsTa5d6ff"Tb4b4b4, Tff7b72lambda Te6edf3createTff7b72=Tff7b72TrueTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4)
Te6edf3roots Tff7b72= Te6edf3acTff7b72.Td2a8ffcollect_rw_rootsTb4b4b4(Tffa657strTb4b4b4(Te6edf3storageTb4b4b4)Tb4b4b4, Tffa657strTb4b4b4(Te6edf3reticulumTb4b4b4)Tb4b4b4, Tffa657strTb4b4b4(Te6edf3logsTb4b4b4)Tb4b4b4)
Tff7b72assert Tffa657strTb4b4b4(Te6edf3storageTb4b4b4) Tff7b72in Te6edf3roots
Tff7b72assert Tffa657strTb4b4b4(Te6edf3reticulumTb4b4b4) Tff7b72in Te6edf3roots
Tff7b72assert Tffa657strTb4b4b4(Te6edf3logsTb4b4b4) Tff7b72in Te6edf3roots
Tff7b72assert Tffa657strTb4b4b4(Te6edf3fake_tempTb4b4b4) Tff7b72in Te6edf3roots


Tff7b72def Td2a8fftest_collect_user_exchange_roots_creates_meshchatx_subdirsTb4b4b4(Te6edf3tmp_pathTb4b4b4, Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3documents Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffDocumentsTa5d6ff"
Te6edf3downloads Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffDownloadsTa5d6ff"
Te6edf3pictures Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffPicturesTa5d6ff"
Te6edf3documentsTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3downloadsTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3picturesTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ff_user_profile_dirTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tffa657strTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ff_windows_known_folderTa5d6ff"Tb4b4b4, Tff7b72lambda Te6edf3_fidTb4b4b4: Tff7b72NoneTb4b4b4)
Te6edf3roots Tff7b72= Te6edf3acTff7b72.Td2a8ffcollect_user_exchange_rootsTb4b4b4(Te6edf3createTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72assert Tffa657strTb4b4b4(Te6edf3documents Tff7b72/ Ta5d6ff"Ta5d6ffMeshChatXTa5d6ff"Tb4b4b4) Tff7b72in Te6edf3roots
Tff7b72assert Tffa657strTb4b4b4(Te6edf3downloads Tff7b72/ Ta5d6ff"Ta5d6ffMeshChatXTa5d6ff"Tb4b4b4) Tff7b72in Te6edf3roots
Tff7b72assert Tffa657strTb4b4b4(Te6edf3pictures Tff7b72/ Ta5d6ff"Ta5d6ffMeshChatXTa5d6ff"Tb4b4b4) Tff7b72in Te6edf3roots
Tff7b72assert Tb4b4b4(Te6edf3documents Tff7b72/ Ta5d6ff"Ta5d6ffMeshChatXTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_dirTb4b4b4(Tb4b4b4)
Tff7b72assert Tb4b4b4(Te6edf3downloads Tff7b72/ Ta5d6ff"Ta5d6ffMeshChatXTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_dirTb4b4b4(Tb4b4b4)
Tff7b72assert Tb4b4b4(Te6edf3pictures Tff7b72/ Ta5d6ff"Ta5d6ffMeshChatXTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_dirTb4b4b4(Tb4b4b4)


Tff7b72def Td2a8fftest_collect_rw_roots_includes_exchange_dirsTb4b4b4(Te6edf3tmp_pathTb4b4b4, Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3storage Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffstorageTa5d6ff"
Te6edf3storageTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3exchange Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffDownloadsTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffMeshChatXTa5d6ff"
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTff7b72.Td2a8fftempfileTb4b4b4, Ta5d6ff"Ta5d6ffgettempdirTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6fftmpTa5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6fftmpTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3acTb4b4b4,
Ta5d6ff"Ta5d6ffcollect_user_exchange_rootsTa5d6ff"Tb4b4b4,
Tff7b72lambda Te6edf3createTff7b72=Tff7b72TrueTb4b4b4: Tb4b4b4[Tffa657strTb4b4b4(Te6edf3exchangeTb4b4b4)Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Te6edf3exchangeTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3roots Tff7b72= Te6edf3acTff7b72.Td2a8ffcollect_rw_rootsTb4b4b4(Tffa657strTb4b4b4(Te6edf3storageTb4b4b4)Tb4b4b4, Tffa657strTb4b4b4(Te6edf3storageTb4b4b4)Tb4b4b4, Tffa657strTb4b4b4(Te6edf3storage Tff7b72/ Ta5d6ff"Ta5d6fflogsTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72assert Tffa657strTb4b4b4(Te6edf3exchangeTb4b4b4) Tff7b72in Te6edf3roots
Tff7b72assert Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffDownloadsTa5d6ff"Tb4b4b4) Tff7b72not Tff7b72in Te6edf3roots


Tff7b72def Td2a8fftest_collect_ro_roots_includes_exe_dirTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3exe_dir Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffbackendTa5d6ff"
Te6edf3exe_dirTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3roots Tff7b72= Te6edf3acTff7b72.Td2a8ffcollect_ro_rootsTb4b4b4(Te6edf3exe_dirTff7b72=Tffa657strTb4b4b4(Te6edf3exe_dirTb4b4b4)Tb4b4b4)
Tff7b72assert Tffa657strTb4b4b4(Te6edf3exe_dirTb4b4b4) Tff7b72in Te6edf3roots


Tff7b72def Td2a8fftest_build_command_line_quotes_spacesTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3line Tff7b72= Te6edf3acTff7b72.Td2a8ff_build_command_lineTb4b4b4(
Ta5d6ffrTa5d6ff"Ta5d6ffC:Ta5d6ff\Ta5d6ffProgram FilesTa5d6ff\Ta5d6ffapp.exeTa5d6ff"Tb4b4b4, Tb4b4b4[Ta5d6ff"Ta5d6ff--storage-dirTa5d6ff"Tb4b4b4, Ta5d6ffrTa5d6ff"Ta5d6ffC:Ta5d6ff\Ta5d6ffUsersTa5d6ff\Ta5d6ffa bTa5d6ff\Ta5d6ffdataTa5d6ff"Tb4b4b4]
Tb4b4b4)
Tff7b72assert Ta5d6ff'Ta5d6ff"Ta5d6ffC:Tffea00\\Ta5d6ffProgram FilesTffea00\\Ta5d6ffapp.exeTa5d6ff"Ta5d6ff' Tff7b72in Te6edf3line
Tff7b72assert Ta5d6ff'Ta5d6ff"Ta5d6ffC:Tffea00\\Ta5d6ffUsersTffea00\\Ta5d6ffa bTffea00\\Ta5d6ffdataTa5d6ff"Ta5d6ff' Tff7b72in Te6edf3line


Tff7b72def Td2a8fftest_launcher_rejects_non_windowsTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTff7b72.Td2a8ffsysTb4b4b4, Ta5d6ff"Ta5d6ffplatformTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflinuxTa5d6ff"Tb4b4b4)
Te6edf3code Tff7b72= Te6edf3launcherTff7b72.Td2a8ffrun_launcherTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--portTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff9337Ta5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3code Tff7b72== T79c0ff2


Tff7b72def Td2a8fftest_launcher_rejects_nested_childTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTff7b72.Td2a8ffsysTb4b4b4, Ta5d6ff"Ta5d6ffplatformTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwin32Ta5d6ff"Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffis_appcontainer_childTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4)
Te6edf3code Tff7b72= Te6edf3launcherTff7b72.Td2a8ffrun_launcherTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3code Tff7b72== T79c0ff2


Tff7b72def Td2a8fftest_launcher_forced_fails_when_unsupportedTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTff7b72.Td2a8ffsysTb4b4b4, Ta5d6ff"Ta5d6ffplatformTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwin32Ta5d6ff"Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffis_appcontainer_childTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffappcontainer_supportedTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffappcontainer_forcedTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4)
Te6edf3code Tff7b72= Te6edf3launcherTff7b72.Td2a8ffrun_launcherTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3code Tff7b72== T79c0ff2


Tff7b72def Td2a8fftest_launcher_success_pathTb4b4b4(Te6edf3monkeypatchTb4b4b4, Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTff7b72.Td2a8ffsysTb4b4b4, Ta5d6ff"Ta5d6ffplatformTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwin32Ta5d6ff"Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3launcherTff7b72.Td2a8ffsysTb4b4b4, Ta5d6ff"Ta5d6ffexecutableTa5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffReticulumMeshChatX.exeTa5d6ff"Tb4b4b4)
Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffis_appcontainer_childTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffappcontainer_supportedTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffappcontainer_forcedTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4)

Tff7b72def Td2a8fffake_launchTb4b4b4(Te6edf3exeTb4b4b4, Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3exeTff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ffReticulumMeshChatX.exeTa5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ff--headlessTa5d6ff" Tff7b72in Te6edf3args
Tff7b72return Te6edf3acTff7b72.Td2a8ffLaunchResultTb4b4b4(Te6edf3okTff7b72=Tff7b72TrueTb4b4b4, Te6edf3exit_codeTff7b72=T79c0ff0Tb4b4b4, Te6edf3used_appcontainerTff7b72=Tff7b72TrueTb4b4b4)

Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6fflaunch_backend_sandboxedTa5d6ff"Tb4b4b4, Te6edf3fake_launchTb4b4b4)
Te6edf3code Tff7b72= Te6edf3launcherTff7b72.Td2a8ffrun_launcherTb4b4b4(
Tb4b4b4[Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--portTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff9337Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--storage-dirTa5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4]
Tb4b4b4)
Tff7b72assert Te6edf3code Tff7b72== T79c0ff0


Tff7b72def Td2a8fftest_main_skips_appcontainer_wrap_for_self_checkTb4b4b4(Te6edf3monkeypatchTb4b4b4, Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
T8b949e"""One-shot --self-check must not CreateProcess into an AppContainer."""
Tff7b72from T7ee787meshchatx Tff7b72import Te6edf3meshchat Tff7b72as Te6edf3meshchat_mod
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787self_check Tff7b72import Te6edf3SELF_CHECK_LABELS

Te6edf3called Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fflauncherTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4}

Tff7b72def Td2a8ffboom_launcherTb4b4b4(Te6edf3_argvTb4b4b4)Tb4b4b4:
Te6edf3calledTb4b4b4[Ta5d6ff"Ta5d6fflauncherTa5d6ff"Tb4b4b4] Tff7b72= Tff7b72True
Tff7b72return T79c0ff2

Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3meshchat_modTff7b72.Td2a8ffsysTb4b4b4, Ta5d6ff"Ta5d6ffplatformTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwin32Ta5d6ff"Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3meshchat_modTb4b4b4, Ta5d6ff"Ta5d6ffappcontainer_requestedTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3meshchat_modTb4b4b4, Ta5d6ff"Ta5d6ffis_appcontainer_childTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Ta5d6ff"Ta5d6ffmeshchatx.src.backend.appcontainer_launcher.run_launcherTa5d6ff"Tb4b4b4,
Te6edf3boom_launcherTb4b4b4,
Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3meshchat_modTff7b72.Td2a8ffsysTb4b4b4,
Ta5d6ff"Ta5d6ffargvTa5d6ff"Tb4b4b4,
Tb4b4b4[Ta5d6ff"Ta5d6ffmeshchat.pyTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--storage-dirTa5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff--self-checkTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4]Tb4b4b4,
Tb4b4b4)

Te6edf3mock_results Tff7b72= Tb4b4b4{Te6edf3keyTb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffreasonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4} Tff7b72for Te6edf3key Tff7b72in Te6edf3SELF_CHECK_LABELSTb4b4b4}

Tff7b72with Tb4b4b4(
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.ReticulumMeshChatTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_app_classTb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.src.backend.identity_context.DatabaseTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.src.backend.identity_context.ConfigManagerTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffaiohttp.web.run_appTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3meshchat_modTb4b4b4, Ta5d6ff"Ta5d6ff_maybe_run_embedded_moduleTa5d6ff"Tb4b4b4, Te6edf3return_valueTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3mock_app_instance Tff7b72= Te6edf3mock_app_classTff7b72.Td2a8ffreturn_value
Te6edf3mock_app_instanceTff7b72.Td2a8ffrun_self_test Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3return_valueTff7b72=Te6edf3mock_resultsTb4b4b4)
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Tf85149SystemExitTb4b4b4) Tff7b72as Te6edf3excinfoTb4b4b4:
Te6edf3meshchat_modTff7b72.Td2a8ffmainTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3excinfoTff7b72.Td2a8ffvalueTff7b72.Td2a8ffcode Tff7b72== T79c0ff0
Tff7b72assert Te6edf3calledTb4b4b4[Ta5d6ff"Ta5d6fflauncherTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Te6edf3mock_app_instanceTff7b72.Td2a8ffrun_self_testTff7b72.Td2a8ffassert_called_onceTb4b4b4(Tb4b4b4)


Tff7b72def Td2a8fftest_launcher_reports_launch_failureTb4b4b4(Te6edf3monkeypatchTb4b4b4, Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTff7b72.Td2a8ffsysTb4b4b4, Ta5d6ff"Ta5d6ffplatformTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwin32Ta5d6ff"Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3launcherTff7b72.Td2a8ffsysTb4b4b4, Ta5d6ff"Ta5d6ffexecutableTa5d6ff"Tb4b4b4, Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffReticulumMeshChatX.exeTa5d6ff"Tb4b4b4)
Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffis_appcontainer_childTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffappcontainer_supportedTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3launcherTb4b4b4, Ta5d6ff"Ta5d6ffappcontainer_forcedTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3launcherTb4b4b4,
Ta5d6ff"Ta5d6fflaunch_backend_sandboxedTa5d6ff"Tb4b4b4,
Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Te6edf3acTff7b72.Td2a8ffLaunchResultTb4b4b4(Te6edf3okTff7b72=Tff7b72FalseTb4b4b4, Te6edf3errorTff7b72=Ta5d6ff"Ta5d6ffboomTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3code Tff7b72= Te6edf3launcherTff7b72.Td2a8ffrun_launcherTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3code Tff7b72== T79c0ff1


Tff7b72def Td2a8fftest_apply_mitigations_noop_outside_childTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffis_appcontainer_childTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4)
Tff7b72with Te6edf3patchTff7b72.Td2a8ffobjectTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffsysTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3mock_sysTb4b4b4:
Te6edf3mock_sysTff7b72.Td2a8ffplatform Tff7b72= Ta5d6ff"Ta5d6ffwin32Ta5d6ff"
Tff7b72assert Te6edf3acTff7b72.Td2a8ffapply_windows_process_mitigationsTb4b4b4(Tb4b4b4) Tff7b72is Tff7b72False


Tff7b72def Td2a8fftest_launch_backend_forced_no_fallbackTb4b4b4(Te6edf3monkeypatchTb4b4b4, Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3storage Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffstorageTa5d6ff"
Te6edf3storageTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)

Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffensure_appcontainer_profileTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tffa657objectTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffgrant_path_accessTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tff7b72NoneTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffrevoke_path_accessTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tff7b72NoneTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3acTb4b4b4,
Ta5d6ff"Ta5d6ffcreate_process_in_appcontainerTa5d6ff"Tb4b4b4,
Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tb4b4b4(Te6edf3_ Tff7b72for Te6edf3_ Tff7b72in Tb4b4b4(Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffthrowTb4b4b4(Tf85149OSErrorTb4b4b4(Ta5d6ff"Ta5d6ffcreate failedTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffcollect_ro_rootsTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4)

Te6edf3result Tff7b72= Te6edf3acTff7b72.Td2a8fflaunch_backend_sandboxedTb4b4b4(
Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffexeTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4[Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3storage_dirTff7b72=Tffa657strTb4b4b4(Te6edf3storageTb4b4b4)Tb4b4b4,
Te6edf3reticulum_config_dirTff7b72=Tffa657strTb4b4b4(Te6edf3storageTb4b4b4)Tb4b4b4,
Te6edf3log_dirTff7b72=Tffa657strTb4b4b4(Te6edf3storage Tff7b72/ Ta5d6ff"Ta5d6fflogsTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3forcedTff7b72=Tff7b72TrueTb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3resultTff7b72.Td2a8ffok Tff7b72is Tff7b72False
Tff7b72assert Te6edf3resultTff7b72.Td2a8fffell_back Tff7b72is Tff7b72False
Tff7b72assert Ta5d6ff"Ta5d6ffcreate failedTa5d6ff" Tff7b72in Tb4b4b4(Te6edf3resultTff7b72.Td2a8fferror Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)


Tff7b72def Td2a8fftest_launch_backend_auto_fallbackTb4b4b4(Te6edf3monkeypatchTb4b4b4, Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3storage Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffstorageTa5d6ff"
Te6edf3storageTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3sid Tff7b72= Tffa657objectTb4b4b4(Tb4b4b4)

Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffensure_appcontainer_profileTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Te6edf3sidTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffgrant_path_accessTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tff7b72NoneTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffrevoke_path_accessTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tff7b72NoneTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3acTb4b4b4,
Ta5d6ff"Ta5d6ffcreate_process_in_appcontainerTa5d6ff"Tb4b4b4,
Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tb4b4b4(Te6edf3_ Tff7b72for Te6edf3_ Tff7b72in Tb4b4b4(Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffthrowTb4b4b4(Tf85149OSErrorTb4b4b4(Ta5d6ff"Ta5d6ffcreate failedTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3acTb4b4b4,
Ta5d6ff"Ta5d6ffcreate_process_unsandboxedTa5d6ff"Tb4b4b4,
Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tb4b4b4(T79c0ff1Tb4b4b4, T79c0ff2Tb4b4b4, T79c0ff99Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffclose_handleTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tff7b72NoneTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ff_wait_processTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4, Tff7b72*Tff7b72*Te6edf3kTb4b4b4: T79c0ff0Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3acTb4b4b4, Ta5d6ff"Ta5d6ffcollect_ro_rootsTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Tff7b72*Te6edf3kTb4b4b4: Tb4b4b4[Tb4b4b4]Tb4b4b4)

Te6edf3result Tff7b72= Te6edf3acTff7b72.Td2a8fflaunch_backend_sandboxedTb4b4b4(
Tffa657strTb4b4b4(Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffexeTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4[Ta5d6ff"Ta5d6ff--headlessTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3storage_dirTff7b72=Tffa657strTb4b4b4(Te6edf3storageTb4b4b4)Tb4b4b4,
Te6edf3reticulum_config_dirTff7b72=Tffa657strTb4b4b4(Te6edf3storageTb4b4b4)Tb4b4b4,
Te6edf3log_dirTff7b72=Tffa657strTb4b4b4(Te6edf3storage Tff7b72/ Ta5d6ff"Ta5d6fflogsTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3forcedTff7b72=Tff7b72FalseTb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3resultTff7b72.Td2a8ffok Tff7b72is Tff7b72True
Tff7b72assert Te6edf3resultTff7b72.Td2a8fffell_back Tff7b72is Tff7b72True
Tff7b72assert Te6edf3resultTff7b72.Td2a8ffused_appcontainer Tff7b72is Tff7b72False
Tff7b72assert Te6edf3resultTff7b72.Td2a8ffexit_code Tff7b72== T79c0ff0


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────